import axios from 'axios'
import { Toast } from 'vant'
import store from '@/store'

// 创建axios实例，配置公共的请求头、基本URL等
const request = axios.create({
  baseURL: 'https://smart-shop.itheima.net/index.php?s=/api/', // 根据实际项目设置API的基础URL
  timeout: 5000 // 请求超时时间
})

// 请求拦截器 - 在发送请求之前进行操作
request.interceptors.request.use(
  config => {
    Toast.loading({
      message: '加载中...',
      forbidClick: true,
      loadingType: 'spinner',
      duration: 0
    })
    // 在这里您可以添加token验证或者其他全局请求参数
    const token = store.getters.token
    if (token) {
      config.headers['Access-Token'] = token
      config.headers.platform = 'H5'
    }
    return config
  },
  error => Promise.reject(error)
)

// 响应拦截器 - 处理服务器返回的状态和数据
request.interceptors.response.use(
  response => {
    // 对响应数据做统一处理，例如判断状态码是否正确
    const { data } = response
    if (data.status === 200) {
      Toast.clear()
      return data
    } else {
      Toast(data.message)
      // 抛出错误，逻辑停止
      return Promise.reject(data.message)
    }
  },
  error => {
    // 对错误响应做统一处理，如弹窗提示、错误日志记录等
    console.error('Request Error:', error)
    return Promise.reject(error)
  }
)

export default request
